package jsoup;

import cn.demoncat.util.http.HttpUtil;
import cn.demoncat.util.http.JsoupUtil;
import cn.demoncat.util.http.entity.HttpFileParam;
import cn.demoncat.util.http.entity.HttpRequest;
import cn.demoncat.util.io.IoUtil;
import cn.demoncat.util.lang.JsonUtil;
import cn.demoncat.util.lang.entity.Result;
import cn.demoncat.util.lang.entity.tree.StrTreeEntity;
import cn.demoncat.util.web.entity.HttpParam;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.nodes.Element;
import org.junit.Test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * 产品分类查询
 * 
 * @author 延晓磊
 *
 * @since 2020年6月14日
 */
public class ProductQuery {

	// 统计局 -产品分类目录：2 ~ 3层
	private static final String URL = "http://www.stats.gov.cn/tjsj/tjbz/tjypflml/index%s.html";

	// 查询并输出产品分类
	@Test
	public void out() throws FileNotFoundException {
		IoUtil.write(JsonUtil.toFormatStr(query()), new FileOutputStream("D:/product.json"));
	}

	/**
	 * 查询产品分类目录
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年6月14日
	 */
	private static List<StrTreeEntity> query() {
		List<StrTreeEntity> datas = new ArrayList<>();
		StrTreeEntity data;
		StrTreeEntity data2;
		StrTreeEntity data3;
		String url;
		String[] text;
		// 1级
		for (int i = 0; i < 5; i++) {
			// 分页查询
			url = String.format(URL, i == 0 ? "" : "_" + i);
			for (Element el : JsoupUtil.http(HttpParam.get(url).times(20)).select("ul.center_list_contlist a:not(.bai12_22h)")) {
				// 数据
				text = el.getElementsByClass("cont_tit03").get(0).text().split("-");
				data = new StrTreeEntity();
				data.setId(StringUtils.trim(text[0]));
				data.setName(StringUtils.trim(text[1]));
				data.setParentId("0");
				datas.add(data);
				// 2级
				url = el.absUrl("href");
				for (Element el2 : JsoupUtil.http(HttpParam.get(url).times(20)).getElementsByClass("citytr")) {
					data2 = new StrTreeEntity();
					data2.setId(StringUtils.trim(StringUtils.stripEnd(el2.child(0).text(), "0")));
					data2.setName(StringUtils.trim(el2.child(1).text()));
					data2.setParentId(data.getId());
					datas.add(data2);
					// 3级（可能为空）
					if (el2.child(0).getElementsByTag("a").isEmpty()) {
						continue;
					}
					url = el2.child(0).child(0).absUrl("href");
					for (Element el3 : JsoupUtil.http(HttpParam.get(url).times(20)).getElementsByClass("countytr")) {
						data3 = new StrTreeEntity();
						data3.setId(StringUtils.trim(StringUtils.stripEnd(el3.child(0).text(), "0")));
						data3.setName(StringUtils.trim(el3.child(1).text()));
						data3.setParentId(data2.getId());
						datas.add(data3);
					}
				}
			}
		}
		return datas;
	}

	/**
	 * 上传文件
	 */
	@Test
	public void upload(){
		// 文件上传：POST 'multipart/form-data'
		Result file = HttpUtil.request(HttpRequest.post("http://dev.api.bgrimm.ys360.net/6p-bus/file/upload")
				// GET参数
				.addParam("token", "BGRIMMFILE").addParam("module", "kyoa").addParam("fullUrl", "1").addParam("saveName", "1")
				// MultipartFile
				.addFile("file", new HttpFileParam(IoUtil.readToBytes("D:/1.jpg"), "test.jpg")))
				.asResult();
		// {status:"200", msg:"操作成功", data:{"str":"http://dev.img.ys360.net/dev/bgrimm/kyoa/2023/11/509320216293433344.jpg#test.jpg"}}
		System.out.println(file);
	}
}
